package com.huanf.controller;

import com.huanf.domain.User;
import com.huanf.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * @author: 35238
 * 功能: 使用官方提供的IService接口里面的方法
 *
 * IService接口的方法命名有如下特点:
 * 1. save开头的方法: 添加
 * 2. saveOrUpdate开头的方法: 添加和修改。如果你的实体类写了id成员变量，那么就是修改，没写id成员变量的话就是添加
 * 3. remove开头的方法: 删除
 * 4. update开头的方法: 修改
 * 5. get开头的方法: 查询
 * 6. list开头的方法: 查询
 *
 * 时间: 2024-01-01 17:32
 */
@RestController
public class IServiceController {

    @Autowired
    private UserService userService;

    //-------------------count查询总记录数的方法，也就是查询数据库有多少条数据，注意不是查询具体的数据----------------------

    @GetMapping("/IService1") //浏览器访问 http://localhost:8050/IService1
    public String IService1() {
        long count = userService.count();
        return "总记录数: "+count;
    }

    //-----------------------------------saveBatch批量添加数据的方法--------------------------------------------

    @GetMapping("/IService2") //浏览器访问 http://localhost:8050/IService2
    public String IService2() {
        List<User> list = new ArrayList<>();
        for (int i = 0; i <= 10; i++) {
            User user = new User();
            user.setName("王五"+i);
            user.setAge(20);
            list.add(user);
        }
        //循环结束之后，list集合就已经有10条数据了，把这些数据批量全添加进数据库
        boolean result = userService.saveBatch(list);
        //注意saveBatch方法的返回值是布尔值，也就是要么成功要么失败
        return "批量添加数据是否成功: "+result;
    }

    //--------------------------------------根据id删除单个数据-------------------------------------------------

    @GetMapping("/IService3") //浏览器访问 http://localhost:8050/IService3
    public String IService3() {
        userService.removeById(21);
        return  "根据id删除(逻辑删除，原因: 在实体类添加了@TableLogic注解)数据成功 请查看数据库的逻辑删除字段";
    }

    //--------------------------------------根据id删除多个数据-------------------------------------------------

    @GetMapping("/IService4") //浏览器访问 http://localhost:8050/IService4
    public String IService4() {
        List<String> list = new ArrayList<>();
        list.add("20");
        list.add("19");
        list.add("18");
        userService.removeByIds(list);
        return "根据id删除(逻辑删除，原因: 在实体类添加了@TableLogic注解)数据成功 请查看数据库的逻辑删除字段";
    }
    //----------------------------------------根据id修改数据-------------------------------------------------


    @GetMapping("/IService5") //浏览器访问 http://localhost:8050/IService5
    public String IService5() {
        User user = new User();
        user.setUid(17L);
        //修改id为100的数据
        user.setName("张三");
        user.setEmail("123@huanf.com");
        userService.updateById(user);
        return "根据id修改数据成功 请查看数据库";
    }
}
